Amazon SES がサポートしたグローバルエンドポイントを試してみた
2024年12月11日、Amazon SES (Simple Email Service) が グローバルエンドポイントをサポート。
プライマリとセカンダリの2つのリージョンを指定したグローバルエンドポイントを利用することで、平時は2つのリージョンで負荷分散を行い、いずれかのリージョンのSESに障害が発生した場合でも、正常なリージョンを利用してメール送信が可能になりました。
今回、SESのグローバルエンドポイントの設定と、AWS CLIを利用したメール送信を試す機会がありましたので、紹介します。
グローバルエンドポイント設定
Amazon SES ダッシュボードの「グローバルエンドポイント」設定で、東京リージョンをプライマリ、バージニアリージョンをセカンダリとする設定を行いました。
ID複製
プライマリリージョン(東京)からセカンダリリージョン(バージニア)へ、グローバルエンドポイントで利用する検証済みドメインIDを複製しました。
グローバルエンドポイントの設定で「検証済みドメインIDの複製」を実施すると、複製先のEasy DKIMは親リージョン(複製元)のDNSレコードを利用して検証が行われるため、セカンダリリージョン用のDKIM用DNSレコードの登録を省略できます
セカンダリリージョン 設定
今回、グローバルエンドポイントの動作確認のみを目的としていたため、設定セットやカスタムMAIL FROMなどの設定は省略しました。
送信確認
実行環境
CloudShell を利用し、 AWS CLIは、SESのグローバルエンドポイントをサポートする最新版に更新しました。
AWS CLI 更新
- awscliv2 最新バージョンインストール
curl -s "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip -q awscliv2.zip
sudo ./aws/install --update
- バージョン確認
$ aws --version
aws-cli/2.22.15 Python/3.12.6 Linux/6.1.115-126.197.amzn2023.x86_64 exec-env/CloudShell exe/x86_64.amzn.2023
sesv2 send-email
「--endpoint-id」でグローバルエンドポイントのIDを指定してメール送信を試みました。
aws sesv2 send-email \
--from-email-address "sender@example.com" \
--destination "ToAddresses=recipient@example.jp" \
--content "Simple={Subject={Data=Test email,Charset=UTF-8},Body={Text={Data=This is a test email sent using Amazon SES Global endpoints.,Charset=UTF-8}}}" \
--endpoint-id "z********.n5x"
- 実行結果
{
"MessageId": "01060193bb845ac9-ab990c0a-****-****-****-******-000000"
}
料金
SESのグローバルエンドポイントを利用してメール送信を実施した場合、通常のメール送信費用に加え、1000通ごとに0.03USDの追加課金が発生します。
- Outbound email : $0.10/1000 emails
- Global Endpoints : $0.03/1000 emails
まとめ
SESのグローバルエンドポイントを利用することで、メール送信環境の可用性を高める事が可能になりました。
今回は省略していますが、SESの利用実績のないリージョンをセカンダリリージョンとする場合、SESのサンドボックスの解除や、上限緩和の手続きが必要になります。
また、カスタムMAIL FROM設定、Virtual Deliverability Manager (VDM)、イベントログ記録設定なども、プライマリリージョンと同等のレベルに揃える必要があります。専用IPオプションを利用する場合には、セカンダリリージョン側でIPレピュテーションを向上させるための事前暖機などが必要となる可能性があるので、ご留意ください。